package smartlifev30.com.sdk.api.gateway_app;

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import java.util.List;

import smartlifev30.com.sdk.api.CallBack;
import smartlifev30.com.sdk.bean.request.AddZoneRequest;
import smartlifev30.com.sdk.bean.request.EditZoneRequest;
import smartlifev30.com.sdk.bean.response.LoginResponse;

/**
 * 防区管理模块
 * Created by tys on 2018/8/14.
 */

public interface IZoneMgmtGateway {

    /**
     * 查询防区列表
     *
     * @param userName
     * @param token
     * @param sn
     * @param zoneId   长度为0时表示查询所有防区
     * @param callBack
     */
    void queryZone(@NonNull String userName, @NonNull String token, @NonNull String sn,
                   @Nullable List<Integer> zoneId, @NonNull CallBack<LoginResponse> callBack);


    /**
     * 添加一个防区
     *
     * @param userName
     * @param token
     * @param sn
     * @param zone
     * @param callback
     */
    void addZone(@NonNull String userName, @NonNull String token, @NonNull String sn,
                 @NonNull AddZoneRequest.Zone zone, @NonNull CallBack<LoginResponse> callback);

    /**
     * 删除一个/多个防区
     *
     * @param userName
     * @param token
     * @param sn
     * @param zoneId   长度为0时表示清空所有防区
     * @param callBack
     */
    void delZone(@NonNull String userName, @NonNull String token, @NonNull String sn,
                 @Nullable List<Integer> zoneId, @NonNull CallBack<LoginResponse> callBack);

    /**
     * 编辑一个防区
     *
     * @param userName
     * @param token
     * @param sn
     * @param zone
     * @param callback
     */
    void editZone(@NonNull String userName, @NonNull String token, @NonNull String sn,
                  @NonNull EditZoneRequest.Zone zone, @NonNull CallBack<LoginResponse> callback);

    /**
     *  防区的切换
     * @param userName
     * @param token
     * @param sn
     * @param zoneId   该防区on，其他全部off
     * @param callback
     */
    void switchZone(@NonNull String userName, @NonNull String token, @NonNull String sn,
                    @NonNull Integer zoneId, @NonNull CallBack<LoginResponse> callback);

}
